package com.gopay.bis.dao.bankorder;

import com.gopay.common.base.dao.BaseDAO;
import com.gopay.common.domain.bis.BisBankContractInfo;

/**
 * 银行用户签约信息DAO
 *
 * @author wangxintao
 * @BankContractInfoDAO.java
 * @2016-05-17 下午10:29:06 www.gopay.com.cn Inc.All rights reserved.
 */
public interface BankContractInfoDAO extends BaseDAO<BisBankContractInfo, String> {

    /**
     * 是否签约
     * @param contractInfo
     * @return
     */
    public boolean isContracted(BisBankContractInfo contractInfo);

    /**
     * 获取签约信息记录
     * @param contractInfo
     * @return
     */
    public BisBankContractInfo getContractInfo(BisBankContractInfo contractInfo);

    /**
     * 更新签约信息
     * @param contractInfo
     * @return
     */
    public int updateBisBankContractInfo(BisBankContractInfo contractInfo);

    /**
     * 插入签约信息
     * @param contractInfo
     */
    public void insertBisBankContractInfo(BisBankContractInfo contractInfo);
    
    /**
     * 根据卡号更改签约状态
     * @param contractInfo
     */
    public int updateContractStateByCardNo(BisBankContractInfo contractInfo);
    
    /** 
     * 跟新用户签约信息，及要素加密值
     * @param contractInfo
     * @return 
     */
    public int updateContractInfoAndElements(BisBankContractInfo contractInfo);
    
    /**
     * 根据卡号查询签约信息
     * @param contractInfo
     */
    public BisBankContractInfo getContractInfoByCard(BisBankContractInfo contractInfo);
    
    /** 根据 卡号，接口通道获取签约信息
     * @param contractInfo
     * @return 
     */
    public BisBankContractInfo getSignNoByCard(BisBankContractInfo contractInfo);
    
    /**
     * 修改签约信息
     * @param contractInfo
     */
    public int updateContractInfo(BisBankContractInfo contractInfo);
    
    /** 根据卡号，通道，产品修改签约信息
     * @param contractInfo
     * @return 
     * @author w_jiqing 
     */
    public int updateContractInfoByProdChannelCode(BisBankContractInfo contractInfo);
    
    /**
     * 修改签约状态
     * @param contractInfo
     */
    public int updateContractState(BisBankContractInfo contractInfo);
    
    /** 
     * 根据签约协议号查找签约记录
     * @param contractInfo
     * @return 
     */
    public BisBankContractInfo getContractInfoBySingNo(BisBankContractInfo contractInfo);
    
    /** 
     * 根据签约协议号更新签约记录
     * @param contractInfo
     * @return 
     */
    public int updateContractStateBySingNo(BisBankContractInfo contractInfo);

}
